/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.integration.jbossjta.infra;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import com.arjuna.ats.arjuna.coordinator.TxControl;
import com.arjuna.ats.jdbc.TransactionalDriver;
public class JBossTADataSourceBuilder {
private String user;
private String password;
//by default no timeout
private int timeout = 0;
private XADataSource xaDataSource;
public JBossTADataSourceBuilder setUser(String user) {
this.user = user;
return this;
}
public JBossTADataSourceBuilder setPassword(String password) {
this.password = password;
return this;
}
public JBossTADataSourceBuilder setTimeout(int timeout) {
this.timeout = timeout;
return this;
}
public JBossTADataSourceBuilder setXADataSource(XADataSource xaDataSource) {
this.xaDataSource = xaDataSource;
return this;
}
public DataSource createDataSource() throws SQLException {
TxControl.setDefaultTimeout( timeout );
DataSourceProvider.initialize( xaDataSource );
DataSourceProvider dsProvider = new DataSourceProvider();
final XADataSource dataSource = dsProvider.getDataSource( dsProvider.getDataSourceName() );
XADataSourceWrapper dsw = new XADataSourceWrapper(
dsProvider.getDataSourceName(),
dataSource
);
dsw.setProperty( TransactionalDriver.dynamicClass, DataSourceProvider.class.getName() );
dsw.setProperty( TransactionalDriver.userName, user );
dsw.setProperty( TransactionalDriver.password, password );
return dsw;
}
}